<?php
//array_map 调用类方法，方法
$a = [1,2, 3];
$strArr = ['1','2', '3'];
$b = ['a','b','c'];
$c = [',','.', '?'];
$key_a = ['h' => 1, 'l' => -2];
$key_b = ['h' => array(1,2,3), 'l' => array('hel',1)];
var_export(array_map('count', $key_b));exit;
/*var_export(array_map(null,$a,$b, $c));


var_export(array_map('intval', array($strArr)));       //错误的用法
var_export(array_map('intval', $strArr));*/




$func = function($arg1, $arg2) {
    var_dump(func_get_args());
};

var_export(array_map($func, $a,$intArr));

class A {
    function hello($a, $b) {
        echo 'hello';
        return [$a,$b];
    }
    
    static function mainy($a, $b) {
        echo 'main';
        return [$a => $b];
    }
    
    function helloMap($a, $b) {
        array_map(array($this, 'hello'), $a, $b);
    }
}

//类调用
//var_dump(array_map(array('A', 'mainy'), $a, $int));
//var_dump(array_map(array('A', 'hello'), $a, $int)); //错误 非静态方法

//对象调用
$class_a = new A();
$class_a->helloMap($a,$b);
array_map(array($class_a, 'hello'), $a, $b);
array_map(array($class_a, 'mainy'), $a, $b);

call_user_func($func, 'a','b', 'c');
call_user_func_array($func, array('a','b', 'c'));


class B {
    function hello() {
        echo 'hello';
    }
    
    function say() {
        self::hello();
    }
    
}

$class_b = new B();
$class_b->say();




















